package org.wdcode.back.action.user;

import org.wdcode.back.action.BaseBackHelperAdviceAction;
import org.wdcode.back.constants.I18NKey;
import org.wdcode.back.po.User;
import org.wdcode.back.service.UserService;

/**
 * 用户管理Action
 * @author WD
 * @since JDK6
 * @version 1.0 2009-09-23
 */
public class UserAction extends BaseBackHelperAdviceAction<UserService, User> {
	// 序列化 ID
	private static final long	serialVersionUID	= 7574067771160642554L;

	// 原密码
	private String				oldPwd;
	// 新密码
	private String				newPwd;
	// 重复密码
	private String				echoPwd;

	/**
	 * 验证修改密码
	 */
	public void validateChangePwd() {
		// 获得Session中的用户实体
		setEntity(getUserHelper().getUser());
		// 加密原始密码
		oldPwd = getUserHelper().getPassword(oldPwd);
		// 判断原始密码是否相同
		if (!getEntity().getPassword().equals(oldPwd)) {
			// 不相同添加信息
			addFieldError(I18NKey.USER_PWD_OLD_ERROR);
		}
	}

	/**
	 * 修改用户
	 * @return
	 * @throws Exception
	 */
	public String edit() throws Exception {
		// 设置密码
		getEntity().setPassword(getUserHelper().getPassword(newPwd));
		// 执行父方法
		return super.edit();
	}

	/**
	 * 修改个人信息
	 * @return
	 * @throws Exception
	 */
	public String changeInfo() throws Exception {
		return addMessage(getService().update(getEntity()) ? SUCCESS : ERROR);
	}

	/**
	 * 修改个人密码
	 * @return
	 * @throws Exception
	 */
	public String changePwd() throws Exception {
		// 设置密码
		getEntity().setPassword(getUserHelper().getPassword(newPwd));
		// 修改密码并 添加成功信息
		return addMessage(getService().updatePwd(getEntity(), oldPwd) ? SUCCESS : ERROR);
	}

	/**
	 * 重置密码
	 * @return
	 * @throws Exception
	 */
	public String resetPwd() throws Exception {
		// 设置密码
		getEntity().setPassword(getUserHelper().getPassword(newPwd));
		// 重置密码 添加信息
		addMessage(getService().updatePwd(getEntity(), oldPwd) ? SUCCESS : ERROR);
		// 返回修改页
		return EDIT;
	}

	/**
	 * 添加用户
	 * @return
	 * @throws Exception
	 */
	@Override
	public String add() throws Exception {
		// 加密密码
		getEntity().setPassword(getUserHelper().getPassword(getEntity().getPassword()));
		// 返回到成功页
		return super.add();
	}

	/**
	 * 获得原密码
	 * @return 原密码
	 */
	public String getOldPwd() {
		return oldPwd;
	}

	/**
	 * 设置原密码
	 * @param oldPwd 原密码
	 */
	public void setOldPwd(String oldPwd) {
		this.oldPwd = oldPwd;
	}

	/**
	 * 获得新密码
	 * @return 新密码
	 */
	public String getNewPwd() {
		return newPwd;
	}

	/**
	 * 设置新密码
	 * @param newPwd 新密码
	 */
	public void setNewPwd(String newPwd) {
		this.newPwd = newPwd;
	}

	/**
	 * 获得重复密码
	 * @return 重复密码
	 */
	public String getEchoPwd() {
		return echoPwd;
	}

	/**
	 * 设置重复密码
	 * @param echoPwd 重复密码
	 */
	public void setEchoPwd(String echoPwd) {
		this.echoPwd = echoPwd;
	}
}
